<?php 

// 核心文件

// 定义核心目录常量
define('CORE_PATH', './Xbsphp/Core/');
// 定义资源目录常量
define('LIBRARY_PATH', './Xbsphp/Library/');

// 公共资源目录
define('__PUBLIC__', './Public/');


// 引入function
include CORE_PATH.'function.php';

//另外一种方式传参
if(isset($_SERVER['PATH_INFO'])){
	$paths = explode('/', $_SERVER['PATH_INFO']);

	$_GET['m']=$paths[1];
	$_GET['c']=$paths[2];
	$_GET['a']=$paths[3];
}


// 定义模块，控制器，方法名常量，首写字母大写
define('MODULE_NAME',ucfirst(isset($_GET['m'])?$_GET['m']:'index'));
define('CONTROLLER_NAME',ucfirst(isset($_GET['c'])?$_GET['c']:'index'));
define('ACTION_NAME',ucfirst(isset($_GET['a'])?$_GET['a']:'index'));


// 定义模块目录
define('MODULE_PATH',APP_PATH.MODULE_NAME.'/');
// 定义控制器路径
define('CONTROLLER_PATH', MODULE_PATH.'Controller/');
// 定义视图路径常量
define('VIEW_PATH', MODULE_PATH.'View/');
// 定义配置路径常量
define('CONFIG_PATH', MODULE_PATH.'Config/');
// 定义模型路径常量
define('MODEL_PATH', MODULE_PATH.'Model/');
// 定义公共路径常量
define('Common_PATH', MODULE_PATH.'Common/');


// 自动加载类文件
function __autoload($classname)
{
	// 组合类文件所在路径
	$paths = array(
		CONTROLLER_PATH.$classname.'.php',
		CORE_PATH.$classname.'.class.php',
		MODEL_PATH.$classname.'.php',
		LIBRARY_PATH."Smarty/libs/".$classname.'.class.php',
		LIBRARY_PATH."Smarty/libs/sysplugins/".$classname.'.php',
		LIBRARY_PATH."Smarty/libs/plugins/".$classname.'.php',
		);

	//循环路径，如果存在就引入
	foreach ($paths as $path) {
		if(file_exists($path)){
			include $path;
			return;
		}
	}
	// throw new Exception("Error Processing Request:该类不存在".$classname, 1);
	 
	
}


// 获取需要执行的控制器名和方法名
$contrlller = CONTROLLER_NAME.'Controller';
$action =ACTION_NAME; 


// try {
	//执行控制器和方法
	$obj = new $contrlller();
	$obj->$action();
	
// } catch (Exception $e) {
// 	echo $e->getMessage();
// }










 ?>